package yt.kpool.util;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.trycatch.mysnackbar.TSnackbar;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

import yt.kpool.R;
import yt.kpool.base.BaseApplication;

public class Util {

    public static void showSnackBar(Activity activity, String content)
    {
        TSnackbar snackBar = TSnackbar.make(activity.findViewById(android.R.id.content).getRootView(), content, TSnackbar.LENGTH_INDEFINITE, TSnackbar.APPEAR_FROM_TOP_TO_DOWN);
        snackBar.setAction("取消", new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        View snackBarView = snackBar.getView();
        TextView textView = snackBarView.findViewById(R.id.snackbar_text);
        textView.setMaxLines(10);
        textView.setTextSize(13);
        textView.setPadding(12,0,5,14);
//        Drawable drawable = activity.getResources().getDrawable(R.mipmap.tishi);//图片自己选择
//        drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
//        textView.setCompoundDrawables(drawable, null, null, null);
        //增加文字和图标的距离
        textView.setCompoundDrawablePadding(20);
        snackBar.setBackgroundColor(activity.getResources().getColor(R.color.line_grayy));
        snackBar.setActionTextColor(activity.getResources().getColor(R.color.white));
        snackBar.setMessageTextColor(activity.getResources().getColor(R.color.white));
        // snackBar.setMinHeight(0,0);
        // snackBar.addIconProgressLoading(0,true,false);
        snackBar.show();

    }

    /**
     * 加法
     * @param str1
     * @param str2
     * @return
     */
    public static String Addition(String str1, String str2)
    {


        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(str2);
        return bi1.add(bi2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+"";

    }

    /**
     * 减法
     * @param str1
     * @param str2
     * @return
     */
    public static String Subtraction(String str1, String str2)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(str2);
        return bi1.subtract(bi2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+"";

    }

    /**
     * 乘法
     * @param str1
     * @param str2
     * @return
     */
    public static String Multiplication(String str1, String str2)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(str2);
        return bi1.multiply(bi2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+"";

    }

    /**
     * 不保留
     * @param str1
     * @param str2
     * @return
     */
    public static String NMultiplication(String str1, String str2)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(str2);

        return bi1.multiply(bi2)+"";

    }

    /**
     * 保留三位小数的乘法
     * @param str1
     * @param str2
     * @return
     */
    public static String TMultiplication(String str1, String str2)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(str2);
        return bi1.multiply(bi2).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue()+"";

    }

    /**
     * 除法
     * @param str1
     * @param str2
     * @return
     */
    public static String Division(String str1, String str2)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(str2);
        return bi1.divide(bi2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+"";

    }

    /**
     * 除法
     * @param str1
     * @param str2
     * @return
     */
    public static String NDivision(String str1, String str2)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(str2);
        return bi1.divide(bi2).setScale(2, BigDecimal.ROUND_HALF_UP)+"";

    }

    /**
     * 人民币转换美元
     * @param str1 人民币
     *
     * @return
     */

    public static String Transformation(String str1)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(BaseApplication.Exchange+"");
        return bi1.divide(bi2,2, BigDecimal.ROUND_HALF_UP).doubleValue()+"";

    }
    /**
     * 美元转换人民币
     * @param str1 美元
     *
     * @return
     */

    public static String CTransformation(String str1)
    {
        BigDecimal bi1 = new BigDecimal(str1);
        BigDecimal bi2 = new BigDecimal(BaseApplication.Exchange+"");
        return bi1.multiply(bi2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+"";

    }


    /**
     *
     * @param Hashrate 算力加单位
     * @return
     */
    public static String FormatHashrate(double Hashrate)
    {
        BigDecimal bi1 = new BigDecimal(Hashrate+"");


        if (Hashrate >= 1000000000000000000f)
        {
//            BigDecimal bi2 = new BigDecimal(""+1000000000000000000f);
//            return bi1.divide(bi2).setScale(2, BigDecimal.ROUND_HALF_UP)+" E";
            double m=Hashrate/1000000000000000000f;
            return Util.GetTNumber(m+"")+" E";

        }
        else if (Hashrate >= 1000000000000000f)
        {
            double m=Hashrate/1000000000000000f;
            return Util.GetTNumber(m+"")+" P";

        }
        else if (Hashrate >= 1000000000000f)
        {
//            BigDecimal bi2 = new BigDecimal(""+1000000000000f);
//            return bi1.divide(bi2).setScale(2, RoundingMode.HALF_UP)+" T";
            double m=Hashrate/1000000000000f;
            return Util.GetTNumber(m+"")+" T";

        }
        else if (Hashrate >= 1000000000f)
        {
//            BigDecimal bi2 = new BigDecimal(""+1000000000f);
//            return bi1.divide(bi2).setScale(2, BigDecimal.ROUND_HALF_UP)+" G";
            double m=Hashrate/1000000000f;
            return Util.GetTNumber(m+"")+" G";

        }
        else if (Hashrate >= 1000000f)
        {
//            BigDecimal bi2 = new BigDecimal(""+1000000f);
//            return bi1.divide(bi2).setScale(2, BigDecimal.ROUND_HALF_UP)+" M";
            double m=Hashrate/1000000f;
            return Util.GetTNumber(m+"")+" M";

        }
        else if (Hashrate >= 1000)
        {
//            BigDecimal bi2 = new BigDecimal(""+1000);
//            return bi1.divide(bi2).setScale(2, BigDecimal.ROUND_HALF_UP)+" K";
            double m=Hashrate/1000;
            return Util.GetTNumber(m+"")+" K";
        }
        return Hashrate + "B";
    }

    /**
     * 半角转全角
     * @param input
     * @return
     */
    public static String ToDBC(String input) {
        char[] c = input.toCharArray();
        for (int i = 0; i< c.length; i++) {
            if (c[i] == 12288) {
                c[i] = (char) 32;
                continue;
            }if (c[i]> 65280&& c[i]< 65375)
                c[i] = (char) (c[i] - 65248);
        }
        return new String(c);
    }
    // 替换、过滤特殊字符
    public static String StringFilter(String str) throws PatternSyntaxException {
        str=str.replaceAll("【","[").replaceAll("】","]").replaceAll("！","!");//替换中文标号
        String regEx="[『』]"; // 清除掉特殊字符
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.replaceAll("").trim();
    }

    /**
     * 小数过长时返回正常小数
     * @param str1
     * @return
     */
    public static String GetNumber(String str1)
    {
        BigDecimal bigDecimal = new BigDecimal(str1);

         return bigDecimal.toString();
    }

    /**
     * 保留2位小数
     * @param str1
     * @return
     */
    public static String GetTNumber(String str1)
    {
        BigDecimal bigDecimal = new BigDecimal(str1);

        return bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
    }
    public static String GetFNumber(String str1)
    {
        BigDecimal bigDecimal = new BigDecimal(str1);

        return bigDecimal.setScale(4, BigDecimal.ROUND_HALF_UP).toString();
    }
    /**
     * 三位加逗号
     * @param data
     * @return
     */
    public static String FormatTosepara(double data) {
//        DecimalFormat df = new DecimalFormat("#,###.00"); 小数
        DecimalFormat df = new DecimalFormat("#,###");
        return df.format(data);
    }


    public static  String Knumber(double str)
    {
        NumberFormat format=NumberFormat.getNumberInstance();
        format.setMaximumFractionDigits(20);

        String p=format.format(str)+"";

        return p;
    }
}
